\thispagestyle{empty}
\textbf{\Huge Abstract}

The CEAB++ allows students to plan electives for the purpose of fulfilling their
Canadian Engineering Accreditation Board (CEAB) degree requirements. The CEAB++
system allows students to search and select courses, validate their CEAB plans,
and view their subsequent timetable in order to avoid scheduling
conflicts. The current CEAB planner is unreliable and is unable to
interact with course scheduling services to allow students to plan their
timetable. The CEAB++ system uses intelligent choices of software
architectures, design patterns, object oriented design methodologies, and
other techniques presented in the SD322 course in order to address the
shortcomings of the current planner.  The CEAB++ uses the Django web
framework, which is based on an MVC architecture.  Design patterns are
used to reduce code duplication and minimize software defects. The
patterns used include the Decorator, in CEAB++ authentication, the Django
Object-Relational Mapper as the Proxy pattern, and the Observer through
the Django signals framework.  Unit tests and white box tests were used
to validate and test the software's business logic.
In order to gain further insight into the program's
performance, software metrics and profiling tools were used. The insight gained from the
metrics was then applied to improve the program--for example, in reducing
the number of SQL queries on the plans view. By applying these software design
methodologies, a course planner was created which is better able to
meet the needs of Systems Design students and the planner administrators.
